1. Technical Field
The present invention relates to computer networks and more particularly to system and methods for resource allocation in cloud environments.
2. Description of the Related Art
Virtualization has rapidly gained popularity, which affects multiple levels of computing stacks. Since virtualization decouples resources from their users, it provides greater flexibility in terms of resource allocation but also brings in new challenges for optimal design, provisioning and runtime management of systems. Cloud computing is a paradigm of computing that offers virtualized resources “as a service” over the internet. Cloud Managers are responsible for lifecycle management of virtual resources, efficient utilization of physical resources, and they expose basic application programming interfaces (APIs) for operations to users. Software solutions can then be deployed on these virtual resources.
Virtualization, which decouples physical resources from their users, has emerged as one of the key drivers of data center innovation and optimization. Operating system virtualization was first proposed by IBM in the 1960's. Recently, with increased computing capacity of the low-end machines, similar capabilities are now available for many platforms. A virtualized server runs a thin software or firmware layer called a hypervisor which presents an abstraction of the underlying hardware to host multiple virtual machines (VMs). VMs execute either an unmodified (in case of full virtualization) or a slightly modified (in case of para-virtualization) version of the operating system. Virtualization increases server utilization and therefore increases data center efficiency by combining several workloads on a single server.
Referring to FIG. 1, a “hybrid” cloud VM deployment scenario is illustratively shown where a customer “A” data center requests to place three workloads: 1) “Workload1” contains a server workload with a critical business application that has to be highly available within a data center and recoverable in another data center in case of a disaster; 2) “Workload2” is a Virtual Desktop assigned to a user with lower security restrictions but highly sensitive to latency; and 3) “Workload3” is a Virtual Desktop assigned to a user with higher security requirements. Deployment of a virtual machine (VM) typically involves the following steps indicated in the diagram: Step 1. A Cloud Manager 10 requests a Resource Pool Manager 12, in an appropriate data center 14, for an available hypervisor 16 with enough capacity. Step 2. Cloud Manager 10 calls the hypervisor 16 (using standard APIs like libVirt or VMWare SDK) to deploy a VM from a template/appliance. Step 3. The hypervisor creates a VM (VM1).
Deployment of Workload1 requires provisioning three Virtual Machines—VM1 is the primary;—VM1′ is a backup for High Availability;—VM1″ is a backup in another datacenter (data center 2) 15. Deployment of Workload2 requires one Virtual Machine, VM2, to be created in a Service Provider (SP) Data Center (data center 2) 15 located physically close to the user (customer A) for reduced latency. Deployment of Workload3 requires one Virtual Machine, VM3, to be created in a Customer Data Center 17 for improved security. Based on the type of workload and non-functional requirements (NFR), the calls from the cloud manager 10 could get complex and could be different each time.